2 - C++ Crashkurs [ID:36105]
50 von 368 angezeigt

Bei Programmiersprachen haben viele Informatiker Präferenzen, welche manchmal gar mit einer

Art religiösem Eifer verteidigt werden.

Und das gilt natürlich auch für die Betriebssystementwicklung, wenn auch hier die Auswahl der Sprachen etwas

eingeschränkt ist.

2004 kam auf der LKML der Linux Kernel Mailing List beispielsweise diese Mail, in der Linus

Torvalds auf eine eben solche Diskussion antwortet, im konkreten Fall mit dem Vorschlag C++ für

Teile des Kernels zu verwenden.

Im berüchtigten Mailing-Listen-Ton verweist er dabei auf die hohe Komplexität dieser

Programmiersprache sowie deren Übersetzer und sieht drei Gründe, warum man an einem

Betriebssystem Kern überhaupt den C++ entwickeln würde.

Man sucht Probleme.

Man ist C++ jünger und erkennt nicht, dass man eh nur ein c-ähnliches Subset von C++

verwendet oder 3.

Die Hausaufgaben verlangen es.

Nun, machen wir es kurz, auf euch trifft Punkt 3 zu, wir lassen euch schlicht keine andere

Wahl.

Nachdem das jetzt geklärt ist, schauen wir uns diese Sprache mal genauer an.

Ein Ziel bei der Entwicklung von C++ war es, zum klassischen C möglichst kompatibel zu

bleiben, um den Programmierern den Umstieg zu erleichtern, soweit dies das neue Sprachkonzept

erlaubt.

Eine Ausnahme ist beispielsweise, wenn man Schlüsselworte verwendet, die es in C nicht

gibt.

Eine Variable mit dem Namen class ist in C valide, in C++ führt er aber zu einem Übersetzerfehler.

Wenn man von solchen Sonderfällen absieht, ist einfaches Anzieh-C, wie ihr es aus dem

Grundstadium kennt, in den meisten Fällen auch gleichzeitig valides C++.

Das gilt auch für dieses Beispielprogramm, welches lediglich Informatik 4 ausgibt und

auch sowohl von einem C als auch einem C++ Übersetzer ohne Probleme akzeptiert wird.

Allerdings würde ein Vollblut C++-Programmierer dies ein wenig anders schreiben.

So würde er den Header stdio.h durch C stdio austauschen.

Beide sind dem Übersetzer bekannt, aber C stdio ist eine auf C++ angepasste Variante

des C-Headers stdio.h.

Außerdem bietet C++ ein neues Konzept zur Aus- und Eingabe.

Stream-Operatoren.

Diese sind im header.io streamdefiniert.

Im Gegensatz zur fehleranfälligen Printf-F-Familie mit Format-Strings und einer variablen Anzahl

an Parametern wird hier eine Verkettung von Aufrufen an den Shift-Operator des C-Out-Objekts

durchgeführt.

Zudem sorgen Namensräume für Ordnung.

Alle Funktionen aus der C++ Standard Library sind im Namensraum std.de definiert, was bei

C-Out und Endline mit angegeben werden muss.

Da Stringverarbeitung mittels charArrays in C eher kompliziert zu nutzen ist und regelmäßig

zu Puffer überläufen und damit Sicherheitslücken führt, gibt es in C++ einen dedizierten String-Datentyp

mit internem Längenfeld, welcher alle häufig benötigten Operationen bereitstellt.

Es wirkt bereits etwas umständlich, bei jeder Funktion und Objekt explizit den Namensraum

durch das entsprechende Präfix std. anzugeben.

Alternativ kann mittels Using-Names-Space der Suchpfad für Symbole ohne Namensraum-Präfix

bestimmt werden.

Dabei sind Namensräume eine hilfreiche Möglichkeit, Funktionen zu gruppieren und hierarchisch

Teil einer Videoserie :
Teil eines Kapitels:
Einführung

Zugänglich über

Offener Zugang

Dauer

00:25:50 Min

Aufnahmedatum

2020-10-01

Hochgeladen am

2021-09-20 19:18:16

Sprache

de-DE

C++ für die Betriebssystemprogrammierung (Freiwilliges Zusatzseminar der Lehrveranstaltung Betriebssysteme)

Siehe auch (optionale) Übungsaufgabe 0

Folien und Transkript zum Video.

Tags

betriebssysteme C++ operating systems stubs
Einbetten
Wordpress FAU Plugin
iFrame
Teilen